Port decommissioning

ABSTRACT

A management application can automatically coordinate the decommissioning of ports in a switch, ensuring that ports are gracefully taken out of service without unnecessary interruption of service and triggering of automatic recovery functionality that may occur during manual decommissioning of ports. Embodiments may provide for decommissioning of F_ports only, E_ports only, or both F_ports and E_ports. Where link aggregation is provided for in the fabric, decommissioning of a port in a link aggregation group may be performed if there are other operational links in the group. Decommissioning of a non-aggregated port (or the last operational port in a link aggregation group) may be performed if there is a redundant path available.

TECHNICAL FIELD

The present invention relates to the field of computer networking, and in particular to techniques for managing ports in a switch fabric.

BACKGROUND ART

Storage area networks (SANs) are typically implemented to interconnect data storage devices and data servers or hosts, using network switches to provide interconnectivity across the SAN. SANs may be complex systems with many interconnected computers, switches, and storage devices. The switches are typically configured into a switch fabric, and the hosts and storage devices connected to the switch fabric through ports of the network switches that comprise the switch fabric. Most commonly, Fibre Channel (FC) protocols are used for data communication across the switch fabric, as well as for the setup and teardown of connections to and across the fabric, although these protocols may be implemented on top of Ethernet or Internet Protocol (IP) networks.

Typically, hosts and storage devices (generically, devices) connect to switches through a link between the device and the switch, with a node port (N_port) of the device connected to one end of the link and a fabric port (F_port) of a switch connected to the other end of the link. The N_port describes the capability of the port as an associated device to participate in the fabric topology. Similarly, the F_port describes the capability of the port as an associated switch.

Over time, SANs have become more complex, with fabrics involving multiple switches that use inter-switch links (ISLs) connected to switch ports (E_ports) on the switches. In some SANs, a core group of switches may provide backbone switching for fabric interconnectivity, with few or no devices directly connected to the core switches, while a number of edge switches provide connection points for the devices or devices of the SAN. Additional layers of switches may also exist between the edge switches and the core switches.

The increasing complexity of enterprise data centers has complicated switch maintenance operations, which require coordination between several administrators in order to complete. The simple act of blocking a port of a network switch to perform a service action can require multiple teams of users to update their operations in order to avoid using the target port. Often the procedures involved with this kind of effort are manual and prone to error.

Some environments are especially sensitive to administrative errors that activate the automated recovery systems. Such systems include call home, device recovery, logical path recovery, and application recovery systems. Thus, errors in coordination of switch maintenance operations that trigger these automated recovery systems create delays and escalations in production environments that enterprise data center managers would like to avoid.

SUMMARY OF INVENTION

A management application can automatically coordinate the decommissioning of ports in a switch, ensuring that ports are gracefully taken out of service without unnecessary interruption of service and triggering of automatic recovery functionality that may occur during manual decommissioning of ports. Embodiments may provide for decommissioning of F_ports only, E_ports only, or both F_ports and E_ports. Where link aggregation is provided for in the fabric, decommissioning of a port in a link aggregation group may be performed if there are other operational links in the group. Decommissioning of a non-aggregated port (or the last operational port in a link aggregation group) may be performed if there is a redundant path available.

BRIEF DESCRIPTION OF DRAWINGS

The accompanying drawings, which are incorporated in and constitute a part of this specification, illustrate an implementation of apparatus and methods consistent with the present invention and, together with the detailed description, serve to explain advantages and principles consistent with the invention. In the drawings,

FIG. 1 is a block diagram illustrating a deployment of a port decommissioning technique according to one embodiment.

FIG. 2 is a graph illustrating a state diagram for the high-level actions that are performed to achieve port decommissioning according to one embodiment.

FIG. 3 is a flowchart illustrating a technique for decommissioning a port implemented by a wizard according to one embodiment.

FIGS. 4 and 5 are sequence diagrams that describe the decommissioning behavior of a port decommissioning protocol according to one embodiment.

FIG. 6 is a block diagram illustrating an example switch in which a portion of the techniques described below may be implemented according to one embodiment.

DESCRIPTION OF EMBODIMENTS

In the following description, for purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the invention. It will be apparent, however, to one skilled in the art that the invention may be practiced without these specific details. In other instances, structure and devices are shown in block diagram form in order to avoid obscuring the invention. References to numbers without subscripts or suffixes are understood to reference all instance of subscripts and suffixes corresponding to the referenced number. Moreover, the language used in this disclosure has been principally selected for readability and instructional purposes, and may not have been selected to delineate or circumscribe the inventive subject matter, resort to the claims being necessary to determine such inventive subject matter. Reference in the specification to “one embodiment” or to “an embodiment” means that a particular feature, structure, or characteristic described in connection with the embodiments is included in at least one embodiment of the invention, and multiple references to “one embodiment” or “an embodiment” should not be understood as necessarily all referring to the same embodiment.

References to F_ports should be understood as including references to FL_ports and generic ports that can operate as F_ports. Similarly, references to E_ports should be understood as including references to EX_ports and generic ports that can operate as E_ports.

To reduce or eliminate the effort and potential for error in network switch maintenance operations that may create delays and escalations in production environments, such as may be caused by the activation of automated recovery systems, techniques described below provide for automatic coordination of the removal of a port from service. Graceful port decommissioning such as are described below allow an administrator desiring to perform a service action on a port of a network switch to remove a port from use in a way that automatically coordinates the necessary actions to complete the decommissioning without loss of data. The port decommissioning techniques allow choosing a redundant path of equal cost for uninterrupted data flow during the period when the port is out of service.

The techniques provide ways to identify the target port and to communicate the desired action to those systems that are affected by the action. Each system involved indicates whether it agrees with the desired action and the automated technique collects the responses before taking any action.

Port decommissioning generally comprises three components: (1) an application capable of displaying the switch fabric topology and providing a way to select the port or ports that are to be decommissioned, (2) processes capable of evaluating the port or ports to determine if decommissioning is feasible and advisable, and (3) a switch fabric interface capable of blocking the selected port or ports.

In various embodiments, these components may be provided in different ways. In some embodiments, multiple entities within the network switch management topology may provide some or all of the components. In other embodiments, some or all of the components may be provided within a single entity in the management infrastructure.

In some embodiments, port decommissioning may be performed on E_ports connected to ISLs between network switches in the fabric. In other embodiments, port decommissioning may be performed on F_ports connected to links to devices. In yet other embodiments, port decommissioning may be performed on both E_ports and F_ports. For clarity, the discussion below is typically written in terms of decommissioning E_ports, but similar techniques may be used for decommissioning F_ports.

In one embodiment, port decommissioning may be deployed using an out-of-band management methodology, such as one that adheres to the Storage Networking Industry Association (SNIA) Storage Management Initiative-Specification (SMI-S) standard, which is incorporated by reference herein in its entirety for all purposes. In such an embodiment, the application may be any type of software package that uses the SMI-S Common Interface Model (CIM) structure and communicates with the other components using SMI-S directives. The components are identified to the application by IP addresses. Where decommissioning of both E_ports and F_ports are supported, two lists may be maintained—one for switches in the fabric (servers) and one for devices that want to evaluate the decommission requests (clients). In embodiments where only E_port decommissioning is supported, a single list may be used. FIG. 1 demonstrates this deployment context.

FIG. 1 is a block diagram illustrating a deployment of a port decommissioning technique in a system 100 according to one embodiment. In this embodiment, an application 110 executes on an administrative workstation 112 that is connected via a network such as a local area network (LAN) 130 to hosts 140 and devices 150 that are linked by switch fabric 120 of SAN 160. Although illustrated in FIG. 1 as a single chassis, the switch fabric 120 may comprise a plurality of network switches in one or more chassis, connected as a fabric 120 using any desired connection functionality. In the system 100, hosts 140 and devices 150 are connected into a SAN using the switch fabric 120. (The numbers of hosts 140 and devices 150 are illustrative and by way of example only, and any desired number of hosts 140 and devices 150 may be connected in the system 100.

The application 110 performs the analysis and execution of the decommission operation. This includes querying the switches in the fabric 120 for the list of ports then sending block requests for the selected ports. It also includes querying the devices 150 or hosts 140 that want to evaluate the decommission request to determine if the subject F_port or F_ports can be decommissioned.

The application 110 may be provided on any desired non-volatile computer-readable program storage media including, but not limited to, all forms of optical and magnetic, including solid-state, storage elements, including removable media. The application workstation 112 may be any desired type of computational device, including a virtualized computer executing on any real hardware platform desired.

In one embodiment, port decommissioning may use a command line interface implemented on the switch 120 to allow an administrator to decommission a port, using a port identifier as a parameter to the decommission command. The command may block waiting for completion of the decommission request. The command may result in a message indicating successful or unsuccessful completion of the decommissioning of the port. Although some embodiments may only allow decommissioning a single port with a single command, other embodiments may allow decommissioning ranges of ports and multiple non-contiguous ports with a single command if desired.

In various embodiments, one or more conditions may prevent successful decommissioning of a port, including (1) the local port is not in a ready state, (2) the local port is not marked as a lossless port, (3) there is no redundant path to reach all domains, (4) the remote switch port is not in a ready state, (5) the remote switch port is not marked as a lossless port, (6) the remote switch does not support port decommissioning, (7) the port is the last traffic isolation path in a failover disabled traffic isolation zone, and (8) a decommission request is already in progress for this port. Some of these conditions may only apply to E_ports, while others may only apply to F_ports, and others may apply to any port.

In one embodiment, an E_port or an F_port of a network switch may be decommissioned if disabling that port would not make unreachable any destination that was reachable by any node of the fabric 120 prior to the decommissioning. In other embodiments, an E_port may be decommissioned if disabling that port will not cause any domain reachable from that E_port to become unreachable, even if the routing costs to those domains may change. In yet other embodiments, an E_port may only be decommissioned if the redundant route is of equal or lesser routing cost.

In one embodiment, an E_port that is not part of a trunk (link aggregation) group may be decommissioned if it is in an operational state with at least one other redundant E_port of equal cost available to reach all domains that the E_port to be decommissioned can reach.

If the E_port is a member of a trunk group, the E_port may be decommissioned if there is at least one other member in the trunk group. When a trunk port is decommissioned, frames will use other ports in the trunk group to transmit. In one embodiment, if the E_port is the last operational E_port in a trunk group, and there are other available redundant E_ports, then the E_port and trunk group may be decommissioned and taken offline. If there are no available redundant E_ports, then the decommissioning may be rejected if the E_port is the last operational port in the trunk group.

In one embodiment, to be considered a redundant path for the purposes of decommissioning an E_port, the path must be an E_port connection between the same pair of switches as the E_port being decommissioned. Similarly, in order to the considered a redundant path for the purposes of decommissioning an F_port, the path must be a connection between another fabric port of the network switch and another node port of the device.

Upon successful completion of the command all traffic flows on the E_port will have been moved to other redundant paths and the port will be placed in a blocked state. To bring the port back online the administrator may re-enable the port.

In another embodiment, an E_port may be decommissioned through an interface provided by a fabric management system that may provide a graphical user interface (GUI) for controlling and managing one or more switch fabrics of an enterprise.

In one embodiment, if an administrator attempts to decommission both ends of an ISL simultaneously, the system may accept one of the decommissioning requests and reject the other request. In a further embodiment, the selection of which decommissioning request to process by accepting the request to decommission the port in the higher domain, rejecting the request in the lower domain. This allows the lower domain to wait until the higher domain decommissions the port.

Port decommissioning is a function that allows an administrator to remove a port or set of ports from service in a manner that insures that the operation does not affect active environments. This is achieved by coordinating the decommission request with those switches or devices using the port or ports as a resource. Requests to decommission F_Ports are coordinated with the applicable devices and requests to decommission E_ports are coordinated with the applicable switches. As such, the devices or switches have the opportunity to confirm or deny the request before the decommission action is executed.

FIG. 2 is a graph illustrating a state diagram for the high-level actions that are performed to achieve port decommissioning according to one embodiment. In this embodiment, a user 210 selects a port to decommission from a display of a fabric topology; other embodiments may require the user 210 to have previously determined a port to decommission. FIG. 2 is set forth as if the port to be decommissioned is an F_port, connected to a device 230, but a similar procedure may be performed if the port to be decommissioned is an E_port, connecting a switch to another switch in the fabric 120.

To begin, a user 210 selects the port decommission function to the application 220 in action 212, either by way of a command line interface or through a management system user interface. The application 220 then reads the fabric topology in action 222, requesting that information from the fabric 240. The fabric 240 presents fabric topology information to the application 220 in action 242, using any desired representation of the topology, allowing the application to display the fabric topology for the user in action 224, using any desired technique for displaying the topology, including a graphical display of the fabric topology.

The user 210 may then select a port to decommission, indicating that selection to the application 220 in action 214. The application 220 may then issue a decommission request to the device 230, which performs the decommissioning. The device 230 confirms to the application 220 in action 232 that the port can be decommissioned, or that decommissioning is not possible at that time.

If the decommissioning cannot be performed, the application 220 may provide the user 210 with information indicating the reason provided by the device 230 that the port or ports cannot be decommissioned in action 228. When a request to decommission an ISL is presented, the two switches in the fabric 240 involved in the transaction assume the role of devices 230 within the context of the port decommissioning operation. In that case, the switches move the flows assigned to the ISL before confirming the decommission request. If the flows cannot be moved, the switch declines the request with the appropriate reason code.

If the decommissioning is confirmed by the device 230, the application 220 issues a block request to the fabric 240 in action 226. In an embodiment that allows the user to request decommissioning of multiple ports, only the ports that have been confirmed by the device 230 are blocked. The fabric 240 then provides in action 244 the status of the block request for the port or ports being decommissioned. Finally, the application 220 displays to the user 210 the status of the decommissioning in action 228, completing the decommissioning request.

As stated previously, in one embodiment port decommissioning is performed by functionality of a management system, such as the Data Center Fabric Manager (DCFM®) provided by Brocade Communications Systems, Inc. (DCFM is a registered trademark of Brocade Communications Systems, Inc.) In such a management system, port decommissioning functionality may be implemented as a user interface element that presents a user with a sequence of dialog boxes that lead the user through a series of steps to accomplish the desired result, commonly referred to as a wizard.

In such an embodiment, once the user selects the decommission operation, the wizard guides the user through the necessary steps of the operation. FIG. 3 is a flowchart illustrating a technique for decommissioning a port implemented by a wizard according to one embodiment. In block 310, the wizard allows the user to select the switch or switches containing the port(s) to be decommissioned. The wizard presents the ports available for decommissioning on the selected switch(es) and in block 320, the wizard allows the user to select the port(s) to be decommissioned. The wizard may then obtain information about each selected port and construct a list of Fibre Channel identifiers associated with the selected port(s) in block 330. In block 340, that list may be distributed to each of the devices participating in the selected port(s).

If the devices currently support decommissioning of the selected port(s), then in blocks 350-370, the wizard may display the confirmation status for each selected port. If a selected port is an F_port, as identified in block 350, then that status may be that the request is confirmed, denied because the port is in use, or denied because the port is the last port of the device. If the selected port is an E_port, then the status may be that the request is confirmed, denied because the port is in use, denied because the switch cannot isolate the port, or denied because the E_port is part of the last path to the remote switch connected by that ISL.

If the selected port is confirmed for decommissioning, then in block 380 the wizard may issue the request to the switch containing each port to block that port. Finally, in block 390, the wizard may display the status of the selected port, typically indicating the port as blocked.

In an embodiment employing a wizard in a management system, the wizard may provide options for handling the variations and exceptions that arise when executing a port decommissioning operation. The type of variations and exceptions may vary depending on whether the request is declined by a device for an F_port or a switch for an E_port.

For example, a participating device 150 may decline the request to decommission an F_port if the port is still in use or is the last access point into the fabric 120 for a multi-ported device. If a decommission request is declined by a device 150, the wizard may offer the user the option of terminating or forcing the operation in one embodiment. If the operation is terminated and a portion of the function was successful (e.g., some ports of a selected group of ports were decommissioned), the wizard may undo the successful functions by unblocking the ports that were blocked. If the user chooses to force the operation, the wizard may simply block those ports that the device 150 declined to decommission gracefully.

In another example, a participating switch in one embodiment may decline the request to decommission an E_port if the flows using the port cannot be moved to another ISL or if the ISL is the last path into the fabric 120 and thus decommissioning would result in fabric isolation. If a decommission request is declined by a switch, the wizard may offer the user the option of terminating or forcing the operation. If the operation is terminated and a portion of the function was successful, as with declined requests to decommission an F_port, the wizard may undo the successful functions, unblocking ports that were blocked. If the user chooses to force the operation, the wizard may simply block those ports that the switch declined to decommission gracefully.

In one embodiment, decommissioning of an E_port may be implemented in part by the Fabric Shortest Path First (FSPF) module of an operating software of the switches that comprise the fabric 120. In order to bring down an online redundant E_port without traffic disruption, both sides of the ISL must stop using the port to transmit data and the transmit buffers for the port must be flushed before the port is brought offline. To accomplish this, the FSPF module may implement a protocol to send UNREACHABLE events to the routing engine (RTE) of the switch for the ports at each end of the ISL at staggered time intervals before the ports are disabled. The UNREACHABLE event tells the RTE that the neighboring switch has become unreachable from the E_port that is being decommissioned. This protocol is described in more detail below in the discussion of FIG. 4.

The UNREACHABLE events for the E_ports on both ends of the ISL must not be sent at the same time because UNREACHABLE events sent to the RTE may cause the switch to be locked, so new inbound frames cannot be queued to the switch. This also typically causes the switch to stop issuing the R_RDY link primitive. If both switches on each end of the ISL are locked at the same time, the switch will not drain any existing frames on the port and this may result in out of order frames when the route is moved. In order to avoid locking the switches at the same time, port decommissioning may use a chassis lock protocol.

In one embodiment, the FSPF module will ensure that the port being decommissioned is not the last path in an active failover disabled traffic isolation (TI) zone, as this would cause traffic disruptions. Traffic Isolation dedicates paths in the fabric 120 to specific data flows, enabling predictability and avoiding network congestion. Traffic isolation is implemented using a special zone, called a Traffic Isolation zone (TI zone). A TI zone indicates the set of N_ports and E_ports to be used for a specific traffic flow. When a TI zone is activated, the fabric attempts to isolate all inter-switch traffic entering from a member of the zone to only those E_ports that have been included in the zone. The fabric also attempts to exclude traffic not in the TI zone from using E_ports within that TI zone. If failover is disabled and a TI-zoned route fails, traffic for that TI zone halts. If the user attempts to decommission a port that is the last path in a failover disabled TI zone, the FSPF module may return an appropriate status code and inform the user that the port cannot be decommissioned due to the current state of the TI zone.

In one embodiment, the FSPF module may implement a public library function for management entities to call to request a port be decommissioned. The library function may make an interprocess communication call into an FSPF daemon. The call may set a timeout for a predetermined timeout expiration and not return until either the port has been decommissioned, the decommission request has failed for some reason, or a timeout has occurred. If the request fails, a status value may be returned to indicate the failure reason.

A chassis lock protocol according to one embodiment consists of a single chassis lock across switch instances on a chassis. In order to send reachable/unreachable messages to the RTE for port decommissioning, in one embodiment a port must hold the chassis lock for his own chassis and the neighbor chassis. When a port attempts to acquire the locks needed for programming the RTE, it first attempts to obtain its own chassis lock and then sends a lock request frame to the remote FSPF. If the port hub is unable to obtain its own chassis lock or the lock request frame to the remote FSPF fails, the port may place itself in a timer state with a random back-off time and retry when the timer expires. This design ensures that only one port on any switch can be locked at one time and prevents any deadlocks from occurring.

In one embodiment, a new Fibre Channel Switch Internal Link Service (SW_ILS) command is defined to send a decommission request to a neighbor switch. The command, Request Port Decommission, may be sent as an asynchronous SW_ILS request. The response may be a switch accept (SW_ACC), with a code indicating that the request has been accepted or denied; alternately, the response may be a SW_ACC if the request has been accepted and a switch reject (SW_RJT) if the request has been denied. The payload for the Request Port Decommission command may contain the originator and recipient domain ID and the local and remote port numbers. The rejection code may indicate that the remote port is not in a ready state, is not enabled for lossless communications, no other redundant E_port path is available, or that the port is the last path in a failover disabled TI zone.

FIGS. 4 and 5 are sequence diagrams that describe the decommissioning behavior of a port decommissioning protocol according to one embodiment. When a request to decommission a port is received by the FSPF module, the FSPF module checks that the port is an E_port in the DONE state, that another available redundant E_port exists, and that lossless communication is enabled. If these conditions are met, the FSPF module sends an asynchronous Request Port Decommission request to the neighbor FSPF module. The FSPF module also saves the IPC callback information so that the caller can be notified when the decommission request is complete or fails for some reason. FIG. 4 is a sequence diagram that describes a protocol for decommissioning a non-trunk E_port, while FIG. 5 is a sequence diagram that describes a protocol for decommissioning a trunk E_port. In one embodiment, the last port in a trunk group may be E-port decommissioned as if it is a non-trunk E_port.

To begin the decommissioning of a non-trunk E_port, management system 410 sends a port decommission request 411 to FSPF module 420. FSPF module 420 sends a decommission request to FSPF module 440 of the neighboring switch. FSPF module 440 sends a decommission request accepted response 441, accepting the request. FSPF 420 then sends a request to obtain the chassis lock 422 to the FSPF 440, which is responded to by a lock request accepted 442. The FSPF 420 then sends an unreachable event 423 to the local switch driver 430, and then sends a lock release request 424 to the remote FSPF 440. The remote FSPF 440 accepts the lock release request 424, responding with a lock release accepted 443. The remote FSPF 440 then sends a request 444 for the chassis lock of the local chassis to the local FSPF 420. The local FSPF 420 response with a lock request accepted 425. Upon receiving the lock request accepted 425, the remote FSPF 440 sends an unreachable event 445 to the remote switch driver 450. The remote FSPF 440 may then send a request to release the lock 446 to the local FSPF 420, which responds with a lock release accepted 426. The FSPF 420 may then send a request 427 to block the local port to the switch driver 430, before responding with a decommissioning success indication 428 to the management entity 410.

To begin the decommissioning of a trunk E_port, management system 410 sends a port to decommission request 511 to FSPF module 420. FSPF module 420 sends a decommission request 521 to FSPF module 440 of the neighboring switch. FSPF module 440 then sends a request 541 to the remote switch driver 452 to credit returns for the member of the trunk group being disabled. The remote FSPF 440 response to the decommission request 521 with a decommission accepted message 542 that is returned to the local FSPF 420. The local FSPF 420 may then send a request 522 to the local switch driver 430 to stop credit returns for the member of the trunk group being disabled, followed by an instruction 523 to disable the decommissioned E_port. Both sides must disable returning credits to force the other side to stop sending traffic across the trunk member to be decommissioned. The trunk member cannot be disassociated from the trunk group while one side is still sending traffic otherwise frames will be dropped. Once both sides have successfully stopped returning credits on that member, the initiator disables the port. Both sides of the link then may update the trunk members and the trunk bandwidth. Upon completion of disabling the E_port by the local switch driver 430, the local switch driver 430 may send an off-line/master change state change notice (SCN) 531. The remote switch driver 450 may also send an off-line/master change SCN 551 to the remote FSPF module 440.

Upon receipt of the off-line/master change SCN 531, the local FSPF 420 may send a request for a chassis lock 524 to the remote FSPF 440, which responds with a lock request accepted 543. The local FSPF 420 may then send a message 525 to the local switch driver 430 to update the bandwidth for the trunk group containing the E_port, then send a lock release message 526 to the remote FSPF 440.

Upon receipt of the lock release 526, the remote FSPF 440 responds with a lock release accepted message 544, and then sends a request for the chassis lock 545 to the local FSPF 420. The local FSPF 420 indicates acceptance of the chassis lock request 527. The remote FSPF 440 may then send a message 546 to the remote switch driver 450 to update the bandwidth for the trunk group, and then send a lock release message 547 to the local FSPF 420. The local FSPF 420 may then release the lock, sending a lock release accepted 528 back to the FSPF 440. Finally, the local FSPF 420 may indicate the E_port has been successfully decommissioned 529 to the management system 410.

In one embodiment, the FSPF module uses a state machine 600 for port decommissioning. Where a state machine is used for lossless initialization of the port, the decommissioning state machine may be an extension of the lossless initialization state machine.

As indicated by the differences in the sequence graphs of FIGS. 4 and 5, the behavior for a port that is part of a trunk group going offline is different from that of a port that is not part of a trunk group, because no UNREACHABLE needs to be sent to the RTE for the trunked port. The port is removed from the trunk, via the call to the switch driver IOCtl, credit returns are stopped, and then the port can be disabled. After this, both ends of the link will update the bandwidth of the trunk group.

In one embodiment, if the user issues the command at both ends of an ISL at the same time, only one request may be accepted. An arbitration mechanism may be provided that uses domain IDs for deciding which request to accept. Thus, the higher domain may reject the lower domain's decommission request if it has already issued a decommission request. The lower domain may accept the decommission request. This arbitration mechanism is illustrative and by way of example only, and other techniques may be used for deciding which request to perform.

In one embodiment, coordinating the decommissioning of an F_port of a network switch with a device 150 may be implemented by sending a request from the network switch to the device 150 to decommission the F_port. The device 150 may determine whether to accept the request and respond with acceptance or rejection as desired. Upon receiving the acceptance, the network switch may block the F_port.

An Example Hardware Implementation

In one embodiment illustrated in FIG. 6, the hardware functionality for the port decommissioning features described above is implemented as a multiport Fibre Channel switch application specific integrated circuit (ASIC) 610 that is combinable with a processor subsystem 620 to provide a complete multiport Fibre Channel network switch 600. Multiple ASICs 610 can be arranged in various topologies to provide higher port count, modular switch chassis. The ASIC 610 and processor subsystem 620 are illustrative and by way of example only, and other hardware implementations can be used as desired.

The ASIC 610 comprises four major subsystems at the top-level as shown in FIG. 6: A Fibre Channel Protocol Group Subsystem 630, a Frame Storage Subsystem 640, a Control Subsystem 650, and a Processor System Interface 660. Some features of the ASIC 610 that are not relevant to the current discussion have been omitted for clarity of the drawing.

The Fibre Channel Protocol Group (FPG) Subsystem 630 comprises port and serialization/deserialization (SERDES) logic blocks to provide E, F, and FL ports.

The Frame Data Storage (FDS) Subsystem 640 contains the centralized frame buffer memory and associated data path and control logic for the ASIC 610.

The Control Subsystem 650 comprises the switch control path functional blocks, including frame routing.

The Processor System Interface 660 provides a programming interface to the ASIC 610. As illustrated in FIG. 6, the ASIC 610 is connected to the Processor Subsystem 620 via a PCIe link but other architectures for connecting the ASIC 610 to the Processor Subsystem 620 can be used.

Some functionality described above can be implemented as software modules in an operating system or application running on a processor 622 of the processor subsystem 620 and stored in a memory 624 or other storage medium of the processor subsystem 620. This software may be provided during manufacture of the switch chassis 600, or provided on any desired computer-readable medium, such as an optical disc, and loaded into the switch chassis 600 at any desired time thereafter. This typically includes functionality such as the software that allows the creation and management of logical ports that are defined for the ASIC 610 and logical ISLs (LISLs) to connect logical ports, as well as user interface functions, such as a command line interface for management of the switch chassis 600.

In one embodiment, the control subsystem 650 is configured by operating system software of the network switch 600 executing in the processor 622 of the processor subsystem 620.

Serial data is recovered by the SERDES of an FPG block 630 and sent to the FPG subsystem 630, which is responsible for performing decoding, cyclic redundancy check (CRC) checking, minimum and maximum length checks, disparity checks, etc. The FPG subsystem 630 sends the frame to the Frame Storage System (FDS) subsystem 640. The location where the frame is stored is passed to the control subsystem, and is used as the handle of the frame through the ASIC 610. The Control subsystem 650 performs routing, classification, and queuing functions on the frame. Frames are queued on transmit ports based on their routing, filtering and Quality of Service (QoS). Transmit queues de-queue frames for transmit when credits are available to transmit frames. When a frame is ready for transmission, the Control subsystem 650 de-queues the frame from a transmit queue for sending out through the FPG 630.

The control subsystem 650 provides processing with a variety of applications through a programmable interface to software, including (a) Layer2 switching, (b) Layer3 routing (FCR) with complex topology, (c) LUN remapping, (d) LUN zoning, (e) Hard zoning, (f) VSAN routing, (g) Selective egress port for QoS, and (g) End-to-end statistics.

The control subsystem 650 provides hardware capable of encapsulating and routing frames across inter-switch links that are connected to the ports 630 of the ASIC 610, including the transport of logical ISL frames that are to be sent across an extended ISL (XISL). The control subsystem 650 performs frame header processing and Layer 3 routing table lookup functions using routing tables where routing is required, encapsulating the frames based on the routing tables, and routing encapsulated frames. The control subsystem 650 can also bypass routing functions where normal Layer2 switching is sufficient.

Thus, the ASIC 610 can use the control subsystem 650 to perform the encapsulation, routing, and decapsulation, by adding or removing headers to allow frames for a LISL to traverse an XISL between network switches as described above at hardware speeds.

CONCLUSION

By automatically coordinating the decommissioning of ports in a switch, an administrator may improve the reliability and performance of the switch fabric, ensuring that ports are gracefully taken out of service without unnecessary interruption of service and triggering of automatic recovery functionality that may occur during manual decommissioning of ports. Embodiments may provide for decommissioning of F_ports only, E_ports only, or both F_ports and E_ports. Where trunking is provided for in the fabric, decommissioning of a port in a trunk group may be performed if there are other operational links in the trunk group. Decommissioning of a non-trunked port (or the last operational port in a trunk group) may be performed if there is a redundant path available, to avoid data loss or out of order transmission in lossless environments.

Although described above generally in terms of FC fabrics and using FC terminology, the problems and techniques for graceful decommissioning of ports are not limited to FC fabrics and protocols, but may be implemented using similar techniques to those described above in Fibre Channel over Ethernet (FCoE), Ethernet, and other types of networks, including lossless networks using IEEE Data Center Bridging.

It is to be understood that the above description is intended to be illustrative, and not restrictive. For example, the above-described embodiments may be used in combination with each other. Many other embodiments will be apparent to those of skill in the art upon reviewing the above description. The scope of the invention therefore should be determined with reference to the appended claims, along with the full scope of equivalents to which such claims are entitled. In the appended claims, the terms “including” and “in which” are used as the plain-English equivalents of the respective terms “comprising” and “wherein.” 

What is claimed is:
 1. A method, comprising: receiving a request to decommission a first port of a first network switch; coordinating decommissioning of the first port with another network element connected to the first network switch via the first port; and rejecting the request unless every destination reachable from the another network element would remain reachable after decommissioning the first port.
 2. The method of claim 1, further comprising: rejecting the request unless the another network element is reachable via a second port of the network switch.
 3. The method of claim 1, wherein the first port comprises a switch port and the another network element comprises a second network switch.
 4. The method of claim 1, wherein the first port is configured as a member of a link aggregation group.
 5. The method of claim 1, wherein the act of coordinating decommissioning a first port of a first network switch comprises: sending a decommission request to a device connected to the network switch via the first port; receiving acceptance of the decommission request from the device; and blocking the first port of the network switch.
 6. The method of claim 1, wherein the act of coordinating decommissioning a first port of a first network switch comprises: sending a decommission request to a second network switch connected to the first network switch via the first port; receiving acceptance of the decommission request from the first network switch; indicating that the second network switch is unreachable via the first port; indicating that the first network switch is unreachable via a second port of the second network switch; and blocking the first port of the first network switch.
 7. The method of claim 6, wherein the act of coordinating decommissioning a first port of a first network switch further comprises: obtaining a first lock associated with the second network switch before performing the act of indicating that the second network switch is unreachable via the first port; and obtaining a second lock associated with the first network switch before performing the act of indicating that the first network switch is unreachable via the second port of the second network switch.
 8. The method of claim 1, wherein the act of coordinating decommissioning a first port of a first network switch comprises: indicating that the first port is unusable for a link aggregation group of which the first port is a member; and disabling the first port.
 9. The method of claim 8, wherein the another network element is a second network switch, and wherein the act of coordinating decommissioning a first port of a first network switch further comprises: obtaining by the first network switch a lock associated with the second network switch; updating by the first network switch a first bandwidth value associated with the link aggregation group; obtaining by the second network switch a lock associated with the first network switch; and updating by the second network switch a second bandwidth value associated with the link aggregation group.
 10. The method of claim 1, wherein the act of receiving a request to decommission a first port of a first network switch comprises: receiving a request to decommission a plurality of ports of the first network switch.
 11. A non-transitory computer readable medium on which are stored instructions which when executed by a computer perform actions comprising: requesting decommissioning of a first port of a network switch, wherein the decommissioning is rejected by the network switch unless any destination reachable via the first port prior to decommissioning is also reachable via a second port of the network switch.
 12. A non-transitory computer readable medium on which are stored instructions which when executed by a network switch perform actions comprising: receiving a request to decommission a first port of a first network switch; coordinating decommissioning of the port with another network element connected to the first network switch via the first port; and rejecting the request unless every destination reachable by the another network element would remain reachable after the first port is decommissioned.
 13. A network switch, comprising: a processor; an application specific integrated circuit coupled to the processor, comprising: a first port, configured for transmission of data to another network element linked to the network switch via the first port; software executed by the processor, comprising: logic to receive a request to decommission the first port; logic to determine whether the first port can be decommissioned; and logic to coordinate decommissioning of the first port with the another network element.
 14. The network switch of claim 13, wherein the first port comprises a switch port and the another network element comprises another network switch.
 15. The network switch of claim 13, wherein the first port comprises a fabric port and the another network element comprises a device.
 16. The network switch of claim 13, wherein the first port is configured as a member of a link aggregation group.
 17. The network switch of claim 13, wherein the logic to determine whether the first port can be decommissioned comprises: logic to reject the request to decommission the first port unless the another network element is reachable at the second port of the network switch.
 18. The network switch of claim 13, wherein the application specific integrated circuit further comprises a second port, and wherein the logic to determine whether the first port can be decommissioned comprises: logic to accept the request to decommission the first port if the first port and the second port are configured as members of a link aggregation group and the second port is operational.
 19. The network switch of claim 13, wherein the logic to coordinate decommissioning the first port with the another network element comprises: logic to send a decommission request to a device reachable via the first port; logic to receive acceptance of the decommission request from the device; and logic to block the first port of the network switch.
 20. The network switch of claim 19, wherein the logic to coordinate decommissioning the first port with another network element further comprises: logic to indicate that the another network element is unreachable from the first port.
 21. The network switch of claim 13, wherein the logic to coordinate decommissioning of the first port with the another network element comprises: logic to send a decommission request to a second network switch; logic to stop credit returns associated with a member of a link aggregation group corresponding to the first port; logic to disable the first port; and logic to update a bandwidth of the link aggregation group.
 22. A network switch, comprising: a processor; an application specific integrated circuit coupled to the processor, comprising: a first port; and software executed by the processor, comprising: logic to accept a decommissioning request from another network switch; logic to accept a chassis lock request from the another network switch; logic to request a chassis lock of the another network switch; and logic to indicate the another network switch is unreachable via the first port.
 23. A network switch, comprising: a processor; an application specific integrated circuit coupled to the processor, comprising: a plurality of ports grouped as a link aggregation group; and software executed by the processor, comprising: logic to accept a decommission request from another network switch; logic to accept a chassis lock request from the another network switch; logic to stop credit returns associated with a member of the link aggregation group responsive to acceptance of the decommission request; logic to request a chassis lock of the another network switch; and logic to update a bandwidth of the link aggregation group by the network switch and the another network switch.
 24. A network, comprising: a first network switch, comprising: a first switch port; a second network switch, comprising: a second switch port; an inter-switch link, associated with the first switch port and the second switch port; and a management software, comprising: logic to receive a request to decommission the first switch port; logic to request the first network switch to decommission the first switch port; logic to coordinate decommissioning of the first switch port with the second switch; and logic to reject the request if any destination reachable from any node of the network would become unreachable after decommissioning the first switch port.
 25. The network of claim 24, further comprising: a management workstation, wherein the logic to receive a request to decommission the first switch port comprises: logic to send the request to decommission the first switch port from the management workstation to the first network switch; logic to receive the request to decommission the first switch port from the management workstation by the first network switch; and logic to indicate a result of the request to decommission the first switch port.
 26. The network of claim 24, wherein the management software further comprises: logic to reject the request unless an operational redundant link exists between a third switch port of the first network switch and a fourth switch port of the second network switch.
 27. The network of claim 26, wherein the first switch port and the third switch port are members of a link aggregation group.
 28. The network of claim 24, wherein the logic to coordinate decommissioning of the first switch port with the second network switch comprises: logic to send a decommission request to the second network switch; logic to receive acceptance of the decommission request from the second network switch; and logic to block the first switch port of the first network switch.
 29. The network of claim 28, wherein the logic to coordinate decommissioning the first switch port with the second network switch further comprises: logic to indicate that the second network switch is unreachable via the first switch port; and logic to indicate that the first network switch is unreachable via the second switch port of the second network switch.
 30. The network of claim 29, wherein the logic to coordinate decommissioning the first switch port with the second network switch further comprises: logic to obtain a first lock associated with the second network switch before indicating that the second network switch is unreachable via the first port; and logic to obtain a second lock associated with the first switch before indicating that the first network switch is unreachable via the second port of the second network switch.
 31. The network of claim 24, wherein some of the management software executes on the first network switch and some of the management software executes on the second network switch.
 32. A network, comprising: a network switch, comprising: a fabric port; a device, comprising a node port; a link associated with the fabric port and the node port; and a management software, comprising: logic to receive a request to decommission the fabric port; logic to request the network switch to decommission the fabric port; logic to coordinate decommissioning of the fabric port with the device; and logic to reject the request unless every destination reachable from the device would remain reachable from the device after decommissioning the fabric port.
 33. The network of claim 32, wherein some of the management software executes on the network switch.
 34. The network of claim 32, wherein the management software further comprises: logic to reject the request unless an operational redundant link exists between a second fabric port of the network switch and a second node port of the device.
 35. The network of claim 32, wherein the logic to coordinate decommissioning of the fabric port with the device comprises: logic to send a decommission request to the device; logic to receive acceptance of the decommission request from the device; and logic to block the fabric port. 